home *** CD-ROM | disk | FTP | other *** search
/ Dr. Windows 3 / dr win3.zip / dr win3 / VISUALBA / BLTQ12.ZIP / IDEMO.BAS < prev    next >
BASIC Source File  |  1993-01-04  |  51KB  |  1,816 lines

  1.  
  2. DECLARE SUB DoHighlight (row%)
  3. DECLARE SUB DisplayRecord (RecNo&, row%)
  4. DECLARE SUB ShowDBFStruc (ask4%, ask$, ret$)
  5. DECLARE SUB ShowFieldNames (StartField%)
  6. DECLARE SUB ShowNewFields (newfield%)
  7. DECLARE SUB ShowMainScreen (infile$)
  8. DECLARE SUB ShowStartCL ()
  9.  
  10. DECLARE SUB DoGoHome ()
  11. DECLARE SUB DoGoEnd ()
  12. DECLARE SUB DoHorzScroll (dir%)
  13. DECLARE SUB DoHorzSlide (kbkey%)
  14. DECLARE SUB DoHorzSkip (dir%)
  15. DECLARE SUB DoVertScroll (dir%)
  16. DECLARE SUB DoVertSlide (kbkey%)
  17. DECLARE SUB AdjustHorzSlide (FirstField%)
  18. DECLARE SUB AdjustVertSlide (RecNo&)
  19.  
  20. DECLARE SUB DoInitHots ()
  21. DECLARE FUNCTION DoInit% ()
  22. DECLARE FUNCTION WaitForKey% ()
  23. DECLARE FUNCTION GetRecord% (RecNo&)
  24.  
  25. DECLARE SUB WinClr (row%, col%, rows%, cols%, char%, fg%, bg%)
  26. DECLARE SUB WinGet (row%, col%, rows%, cols%, ID%)
  27. DECLARE SUB WinPrt (txt$, row%, col%, MaxChars%, FirstChar%, fg%, bg%)
  28. DECLARE SUB WinPut (row%, col%, rows%, cols%, ID%)
  29. DECLARE SUB WinSetMode (page%, row%, col%, cstart%, cend%, vmode%)
  30. DECLARE SUB WinScroll (row%, col%, rows%, cols%, dir%, fg%, bg%)
  31. DECLARE SUB WinShift (row%, col%, rows%, cols%, dir%, fg%, bg%)
  32.  
  33. DECLARE SUB MouseFunc (Func%, IM AS ANY, OM AS ANY)
  34. DECLARE SUB MouseTurn (onoff%)
  35. DECLARE FUNCTION SelectEvent% ()
  36. DECLARE FUNCTION InKeyPick% (waitfor%)
  37. DECLARE FUNCTION InMousePick% ()
  38. DECLARE SUB InKeyResponse (row%, col%, maxlen%, retstr$)
  39.  
  40.  
  41. REM $INCLUDE: 'BULLET.BI'
  42. REM $INCLUDE: 'ZWINDO.BI'
  43.  
  44. DECLARE SUB INTERRUPTX (intnum%, ireg AS ANY, oreg AS ANY)
  45.  
  46. DEFINT A-Z
  47.  
  48. 'interactive demo
  49. '31-May-92 chh
  50. '------------------
  51. 'instructions for QuickBASIC 4.5
  52. 'C>bc idemo /o;
  53. 'C>link idemo+zwindo+intrpt2,idemo.exe,nul,bullet;
  54. 'C>link /qu bullet.lib+zwindo+intrpt2,idemo.qlb,nul,bqlb45;
  55.  
  56. '-----------------
  57. 'instructions for PDS BASIC 7.1
  58. 'C>bc idemo /o/ot;
  59. 'C>link /noe/packc/far idemo+zwindo+intrpt2+smallerr+tscnionr,
  60. '       idemo.exe,nul,bullet;
  61. 'C>link /qu bullet.lib+zwindo+intrpt2,idemo.qlb,nul,qbxqlb;
  62.  
  63. '----------------------------------------------------------------------------
  64. 'notes: INTRPT2.OBJ and ZWINDO.OBJ are provided as-is and are not a supported
  65. '       part of the BULLET package. INTRPT2.OBJ is a replacement module for
  66. '       the somewhat buggy INTERRUPT(X) code provided in the QB.LIB/QBX.LIB
  67. '       files of QuickBASIC/BASIC 7.1. ZWINDO.OBJ is a cut-down direct-access
  68. '       screen/video manager, included here only so that you can recompile
  69. '       the IDEMO.BAS program.
  70.  
  71. '       This demo is an abbreviated full-interactive program. There is still
  72. '       a lot that can (and needs to) be done. What you might want to add is
  73. '       select/create indexes, set filters, oh, lots of things. In an effort
  74. '       to keep the IDEMO.EXE included with BULLET package small the guts of
  75. '       the program have not been done.
  76.  
  77. '       To use the program just C>idemo filename.dbf. You can use the provided
  78. '       .DBF file or any .DBF file. To pan fields if the record is longer than
  79. '       the display screen, use the left/right arrows. A mouse can be used on
  80. '       the scroll bars/arrows, too. Esc exits to DOS. To browse the DBF use
  81. '       the up/down arrows, page up/dn, home/end, or the mouse buttons along
  82. '       the right AND bottom.
  83.  
  84. '       For more direct source example see the BB_*.BAS QB source files.
  85.  
  86. '----------
  87. 'event data
  88.  
  89. TYPE ButtonInfoTYPE
  90. x0 AS INTEGER   'col
  91. y0 AS INTEGER   'row
  92. xs AS INTEGER   'cols
  93. ys AS INTEGER   'rows
  94. kv AS INTEGER   'key value
  95. END TYPE
  96.  
  97. TYPE RegTypeX   'interface structure to INTERRUPTX
  98. ax AS INTEGER
  99. bx AS INTEGER
  100. cx AS INTEGER
  101. dx AS INTEGER
  102. BP AS INTEGER
  103. si AS INTEGER
  104. DI AS INTEGER
  105. flags AS INTEGER
  106. ds AS INTEGER
  107. es AS INTEGER
  108. END TYPE
  109.  
  110. TYPE MouseTYPE  'interface structure to MOUSEFUNC
  111. ax AS INTEGER
  112. bx AS INTEGER
  113. cx AS INTEGER
  114. dx AS INTEGER
  115. END TYPE
  116.  
  117. CONST MAXBUTTONS = 7
  118. DIM SHARED ButtonSpots(1 TO MAXBUTTONS) AS ButtonInfoTYPE
  119.  
  120. DIM SHARED IM AS MouseTYPE      'mouse INT33 ins
  121. DIM SHARED OM AS MouseTYPE      'outs
  122. DIM SHARED xreg AS RegTypeX     'regs for interruptx call
  123. DIM SHARED MouseSaved AS INTEGER'=0 then mouse state not saved
  124. DIM SHARED IsMouse AS INTEGER   '=0 then mouse driver not available
  125.  
  126. '-----------
  127. 'window data
  128.  
  129. CONST MAXWINSAVES = 2           '0-based, window 0 reserved
  130.  
  131. DIM SHARED WSP AS WinSavePack
  132. DIM SHARED WFP AS WinFillPack
  133. DIM SHARED WPP AS WinPrintPack
  134. DIM SHARED WCP AS WinCursorPack
  135. DIM SHARED WCPorg AS WinCursorPack
  136.  
  137. DIM SHARED WinBuff(0 TO (MAXWINSAVES + 1) * 2000) AS INTEGER
  138. DIM SHARED atxt$(1 TO 11)
  139.  
  140. '-----------
  141. 'bullet data
  142.  
  143. CONST MAXRECLEN = 4000          'limit DBF recs to 4000 bytes (o)
  144.  
  145. TYPE StrucTYPE                  'type used for DBF struc display
  146. FieldName AS STRING * 11
  147. FieldType AS STRING * 1
  148. FieldLen AS INTEGER
  149. FieldDC AS INTEGER
  150. END TYPE
  151.  
  152. DIM SHARED DFP AS DOSFilePack
  153. DIM SHARED MP AS MemoryPack
  154. DIM SHARED IP AS InitPack
  155. DIM SHARED EP AS ExitPack
  156. DIM SHARED BP AS BreakPack
  157. DIM SHARED RP AS RemotePack
  158. DIM SHARED CDP AS CreateDataPack
  159. DIM SHARED CKP AS CreateKeyPack
  160. DIM SHARED SDP AS StatDataPack
  161. DIM SHARED SKP AS StatKeyPack
  162. DIM SHARED DP AS DescriptorPack
  163. DIM SHARED OP AS OpenPack
  164. DIM SHARED AP AS AccessPack
  165.  
  166. DIM SHARED StrucDBF(1 TO 255) AS StrucTYPE
  167. 'REDIM SHARED StrucDBF(1 TO 1) AS StrucTYPE 'will be resizing so make dynamic
  168.                                            '--field descriptions for program
  169.                                            
  170. DIM SHARED TheRecord AS STRING * 4000   'any type DBF data record
  171.  
  172.  
  173. '------------
  174. 'program data
  175.  
  176. CONST SSROW = 9 - 1                     'scroll screen row start
  177. CONST SSROWS = 10                       'number of rows in scroll screen
  178.  
  179. TYPE FieldDisplayInfoTYPE
  180. FirstField AS INTEGER                   'start field being displayed
  181. FieldsDisplayed AS INTEGER              'number of fields being displayed
  182. END TYPE
  183.  
  184. TYPE RecordDisplayInfoTYPE
  185. CurrRecord AS LONG                      'highlighted recno (for ScrollBar loc)
  186. TopRecord AS LONG                       'first scroll screen rec's number
  187. BotRecord AS LONG                       'last scroll screen rec's number
  188. TopKey AS STRING * 64                   'first scroll screen rec's key
  189. BotKey AS STRING * 64                   'last scroll screen rec's key
  190. END TYPE
  191.  
  192. TYPE PosInfoTYPE
  193. VertSlide AS INTEGER                    'current slide pos (0-7)
  194. HorzSlide AS INTEGER                    'current slide pos (0-74)
  195. TotalRows AS LONG                       'row or records in file
  196. TotalCols AS INTEGER                    'cols or characters in record
  197. ScreenRow AS INTEGER                    'current screen row (1-10)
  198. END TYPE
  199.  
  200. DIM SHARED FDI AS FieldDisplayInfoTYPE
  201. DIM SHARED RDI AS RecordDisplayInfoTYPE
  202. DIM SHARED PI AS PosInfoTYPE
  203.  
  204. DIM SHARED TmpStr AS STRING * 256       'any type fixed-len string
  205. DIM SHARED ZSTR AS STRING * 1           'zero-terminator
  206. DIM SHARED LockFlag AS INTEGER          '=0 then do not use locks
  207. DIM SHARED CurrIDX AS INTEGER           'current index in use (0,1-32)
  208.  
  209. DIM SHARED ISFG AS INTEGER              'info screen colors
  210. DIM SHARED ISBG AS INTEGER
  211. DIM SHARED ISFGB AS INTEGER
  212. DIM SHARED HSFG AS INTEGER              'field name header colors
  213. DIM SHARED HSBG AS INTEGER
  214. DIM SHARED HSFGB AS INTEGER
  215. DIM SHARED SSFG AS INTEGER              'scroll screen colors
  216. DIM SHARED SSBG AS INTEGER
  217. DIM SHARED SSFGB AS INTEGER
  218.  
  219.  
  220. ZSTR = CHR$(0)
  221. LockFlag = 0
  222. CurrIDX = 0
  223.  
  224. ISFG = 7: ISBG = 0: ISFGB = 15          'info screen colors
  225. HSFG = 15: HSBG = 0: HSFGB = 15         'field name header colors
  226. SSFG = 2: SSBG = 0: SSFGB = 10          'scroll screen colors
  227.  
  228.  
  229. '-----
  230. 'go4it
  231.  
  232. stat = DoInit
  233.  
  234. WinSetMode 0, 0, 0, -1, -1, 3  'page,row,col,cstart,cend,vmode
  235. WinClr 0, 0, 25, 80, 32, ISFG, ISBG
  236. WinClr SSROW, 0, SSROWS + 1, 80, 32, SSFG, SSBG
  237.  
  238. infile$ = COMMAND$
  239. IF LEN(infile$) = 0 THEN
  240.    ShowStartCL
  241.    stat = -1
  242. END IF
  243.  
  244. IF stat = 0 THEN
  245.  
  246.    'open DBF file
  247.  
  248.    TmpStr = infile$ + ZSTR
  249.    OP.Func = OpenDXB
  250.    OP.FilenamePtrOff = VARPTR(TmpStr)
  251.    OP.FilenamePtrSeg = VARSEG(TmpStr)
  252.    OP.ASmode = ReadWrite + DenyNone
  253.    stat = BULLET(OP)
  254.  
  255.    IF stat = 0 T